package org.go.scheduler.jmx;

import java.util.concurrent.ConcurrentHashMap;

import javax.management.AttributeList;

import org.go.expcetion.GoException;
import org.go.expcetion.JobPersistenceException;
import org.go.expcetion.SchedulerException;
import org.go.scheduler.AbstractScheduler;
import org.go.trigger.Trigger;
import org.go.trigger.TriggerKey;

public abstract class JmxScheduler extends AbstractScheduler {
	public JmxScheduler() {

	}

	/**
	 * Get the given attribute of the remote Scheduler MBean.
	 */
	protected abstract Object getAttribute(String attribute) throws GoException;

	/**
	 * Get the given attributes of the remote Scheduler MBean.
	 */
	protected abstract AttributeList getAttributes(String[] attributes) throws GoException;

	@Override
	public ConcurrentHashMap<String, Object> getContext() {

		return null;
	}

	@Override
	public String getJobGroupNames() {

		return null;
	}

	@Override
	public String getSchedulerName() throws SchedulerException {

		return null;
	}

	@Override
	public Trigger getTrigger(TriggerKey tKey) {

		return null;
	}

	@Override
	public boolean isShutdown() throws SchedulerException {

		return false;
	}

	@Override
	public void notifySchedulerListenersError(String string, GoException se) {

	}

	@Override
	public void notifySchedulerListenersError(String string, JobPersistenceException se) {

	}

	@Override
	public void shutdownNow() throws SchedulerException {

	}

	//@Override
	//	public void startAll() throws GoException {
	//
	//	}

	//	@Override
	//	public void startDelayed(int seconds) throws SchedulerException {
	//
	//	}

	@Override
	public void unscheduleWork(TriggerKey tKey) {

	}
}
